(function ($) {
    Date.prototype.formatDate = function (format) {
        var date = this;
        format = format || "yyyy-MM-dd";
        var dict = {
            "yyyy": date.getFullYear(),
            "M": date.getMonth() + 1,
            "d": date.getDate(),
            "H": date.getHours(),
            "m": date.getMinutes(),
            "s": date.getSeconds(),
            "MM": ("" + (date.getMonth() + 101)).substr(1),
            "dd": ("" + (date.getDate() + 100)).substr(1),
            "HH": ("" + (date.getHours() + 100)).substr(1),
            "mm": ("" + (date.getMinutes() + 100)).substr(1),
            "ss": ("" + (date.getSeconds() + 100)).substr(1)
        };
        return format.replace(/(yyyy|MM?|dd?|HH?|ss?|mm?)/g, function () {
            return dict[arguments[0]];
        });
    };
    //修正默认验证字符串
    $.extend(jQuery.validator.messages, {
        required: "必选字段",
        remote: "请修正该字段",
        email: "请输入正确格式的电子邮件",
        url: "请输入合法的网址",
        date: "请输入合法的日期",
        dateISO: "请输入合法的日期 (ISO).",
        number: "请输入合法的数字",
        digits: "只能输入整数",
        creditcard: "请输入合法的信用卡号",
        equalTo: "请再次输入相同的值",
        accept: "请输入拥有合法后缀名的字符串",
        maxlength: jQuery.validator.format("请输入一个 长度最多是 {0} 的字符串"),
        minlength: jQuery.validator.format("请输入一个 长度最少是 {0} 的字符串"),
        rangelength: jQuery.validator.format("请输入 一个长度介于 {0} 和 {1} 之间的字符串"),
        range: jQuery.validator.format("请输入一个介于 {0} 和 {1} 之间的值"),
        max: jQuery.validator.format("请输入一个最大为{0} 的值"),
        min: jQuery.validator.format("请输入一个最小为{0} 的值")
    });
    //增加正则表达式验证
    $.validator.addMethod("reg", function (value, element, param) {
        return this.optional(element) || new RegExp(param).test(value);
    }, $.validator.format("您填写的内容格式错误"));
    $.validator.addMethod("regex", function (value, element, param) {
        return this.optional(element) || param[0].test(value);
    }, $.validator.format("{1}"));
    $.validator.addMethod("maxbytelength", function (value, element, param) {
        var count = 0;
        if (value) {
            for (var i = 0; i < value.length; i++) {
                count++;
                if (value.charCodeAt(i) >> 8) count++;
            }
        }
        return this.optional(element) || param > count;
    }, "输入的内容应当不超过{0}个字节");
    $.validator.addMethod("rangebytelength", function (value, element, param) {
        var count = 0;
        if (value) {
            for (var i = 0; i < value.length; i++) {
                count++;
                if (value.charCodeAt(i) >> 8) count++;
            }
        }
        return this.optional(element) || (param[1] >= count && param[0] <= count);
    }, "输入的内容应当为[{0}-{1}]个字节");
    //日期控件样式设置
    $.datepicker.setDefaults({
        altFormat: "yy-mm-dd",//时间格式（用于生成显示）
        appendText: "",//追加的字符串，比如在2012年12月24日后加入开始可以用appendText："开始"
        autoSize: false,//控件是不是可以被人为改变大小
        buttonImage: "Styles/lib/images/calendar.gif",//日期选择图片
        buttonImageOnly: true,//标示是不是只使用图片打开日历
        buttonText: "",//使用文字选择时，显示的文字
        changeMonth: false,//是否使用下拉框选择月份
        changeYear: true,//是否使用下拉框选择年份
        closeText: "关闭",//管理显示文字
        constrainInput: true,//限制文本框的输入为合法的日期格式
        currentText: "今天",//当天按钮显示文字
        dateFormat: "yy-mm-dd",//日期格式用于读取显示
        dayNames: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],//星期显示文字
        dayNamesMin: ["日", "一", "二", "三", "四", "五", "六"],//最小显示星期
        dayNamesShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],//缩略显示星期
        defaultDate: 0,//默认显示当前日期
        duration: "fast",//控制日期框的出现速度，有slow,normal和fast
        firstDay: 1,//星期显示的第一天，默认为0（周日），国内可改成1（周一）
        hideIfNoPrevNext: false,//是不是显示前一天或者后一天按钮
        isRTL: false,//是不是开起右向左文字显示
        maxDate: null,//最大显示日期（以当前日期为准），显示格式为"+1w +1m +1y +1d"可以写一个或者多个，应当写成正数。也可以使用Date类型
        minDate: null,//最小显示日期（以当前日期为准），显示格式为"-1w -1m -1y -1d"可以写一个或者多个，应当写成负数。也可以使用Date类型
        monthNames: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],//月份名称
        monthNamesShort: ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"],//月份名称缩写
        nextText: "下月&gt;",//下一次按钮显示文本
        numberOfMonths: 1,//一次显示几个月
        prevText: "&lt;上月",//上一次按钮文本
        selectOtherMonths: false,//当前月空余部分的其它月日期是不是可以选择
        showButtonPanel: false,//是不是显示功能按钮
        showOn: "button",//显示方式，可以为focus、button、both
        yearRange: "c-10:c+10"//下拉列表显示的日期范围
    });
    var local = location.href.split(/[#?]/g)[0];
    $.imageUpload = function (target, width, height, src, callback) {
        var _src = src;
        src = src || "Images/nopicture.png";
        getImageSize(src, function (size) {
            if (size === false) {
                getImageSize("Images/nopicture.png", loop);
                src = "Images/nopicture.png";
                return;
            }
            loop(size);
        });
        function loop(size) {
            var content = $('' + '<form action="' + local + '?m=Home&a=image" method="post" enctype="multipart/form-data">' + '    <input type="hidden" name="dir" value="' + target + '"/>' + '    <input type="hidden" name="url" data-name="url" value="' + src + '"/>' + '    <input type="hidden" name="width" value="' + width + '"/> ' + '    <input type="hidden" name="height" value="' + height + '"/>' + '    <input type="hidden" name="pos" value="5"/>' + '    <input type="hidden" name="type" data-name="type" value="5"/>' + '' + '    <div class="image-dialog-file">' + '        文件选择：<input type="file" name="upfile"  data-name="file" style="width: 200px;"/><span class="button" data-name="upload">上传</span>' + '    </div>' + '    <div class="image-dialog-image" data-name="img">' + '        <div class="image-dialog-image-bg"  style="' + size + '"></div>' + '        <img class="image-dialog-image-img" src="' + src + '" style="' + size + '">' + '    </div>' + '</form>');
            var upload = content.find("[data-name=upload]");
            var file = content.find("[data-name=file]");
            var img = content.find("[data-name=img]");
            var url = content.find("[data-name=url]");
            var type = content.find("[data-name=type]");
            upload.click(function () {
                if (!file.val()) {
                    alert("请先选择图片");
                    return;
                }
                content.ajaxSubmit({
                    success: function (data) {
                        data = JSON.parse(data);
                        if (!data.success) {
                            alert(data.message);
                            return;
                        }
                        getImageSize(data.url, function (size) {
                            img.children().attr("style", size);
                            img.children("img").attr("src", data.url);
                            url.val(data.url);
                            file.val("");
                        });
                    },
                    error: function () {
                        alert("网络错误");
                    }
                });
            });
            var d = $.dialog({
                title: '图片选择',
                content: content,
                width: 350,
                height: 400,
                lock: true,
                button: [
                    {
                        value: '保存',
                        callback: function () {
                            type.val(0);
                            if (!url.val()) {
                                alert("请先上传图片");
                                return;
                            }
                            content.ajaxSubmit({
                                success: function (data) {
                                    data = JSON.parse(data);
                                    if (!data.success) {
                                        alert(data.message);
                                        return false;
                                    }
                                    callback(data.url);
                                    return true;
                                },
                                error: function () {
                                    alert("网络错误");
                                }
                            });
                        },
                        autofocus: true
                    },
                    {
                        value: '缩放',
                        callback: function () {
                            type.val(2);
                            if (!url.val()) {
                                alert("请先上传图片");
                                return;
                            }
                            content.ajaxSubmit({
                                success: function (data) {
                                    data = JSON.parse(data);
                                    if (!data.success) {
                                        alert(data.message);
                                        return false;
                                    }
                                    callback(data.url);
                                    return true;
                                },
                                error: function () {
                                    alert("网络错误");
                                }
                            });
                        },
                        autofocus: true
                    },
                    {
                        value: '裁切',
                        callback: function () {
                            type.val(1);
                            if (!url.val()) {
                                alert("请先上传图片");
                                return;
                            }
                            content.ajaxSubmit({
                                success: function (data) {
                                    data = JSON.parse(data);
                                    if (!data.success) {
                                        alert(data.message);
                                        return false;
                                    }
                                    callback(data.url);
                                    return true;
                                },
                                error: function () {
                                    alert("网络错误");
                                }
                            });
                        },
                        autofocus: true
                    },
                    {
                        value: '取消',
                        callback: function () {
                            callback(_src);
                        }
                    }
                ]
            });
            d.showModal();
        }
    };
    $.fileUpload = function (target, src, callback) {
        var _src = src;
        var content = $('' + '<form action="' + local + '?m=Home&a=upload" method="post" enctype="multipart/form-data">' + '    <input type="hidden" name="dir" value="' + target + '"/>' + '    <div class="image-dialog-file" style="border-bottom: none">' + '        文件选择：<input type="file" name="upfile"  data-name="file"/>' + '    </div>' + '</form>');
        var file = content.find("[data-name=file]");
        var d = $.dialog({
            title: '文件上传',
            content: content,
            width: 300,
            height: 50,
            lock: true,
            button: [
                {
                    value: '上传',
                    callback: function () {
                        if (!file.val()) {
                            alert("请先选择图片");
                            return;
                        }
                        content.ajaxSubmit({
                            success: function (data) {
                                data = JSON.parse(data);
                                if (!data.success) {
                                    alert(data.message);
                                    return;
                                }
                                callback(data.url);
                            },
                            error: function () {
                                alert("网络错误");
                            }
                        });
                    },
                    autofocus: true
                },
                {
                    value: '取消',
                    callback: function () {
                        callback(_src);
                    }
                }
            ]
        });
        d.showModal();
    };
    function getImageSize(url, callback) {
        var image = new Image();
        image.onload = function () {
            var height = image.height;
            var width = image.width;
            if (height === 0) {
                return callback(false);
            }
            var r_width = width * 350 / height;
            if (r_width < 350) {
                return callback('width: ' + r_width + 'px;height:350px;top: 0;left: ' + Math.floor((350 - r_width) / 2) + 'px;');
            }
            var r_height = height * 350 / width;
            return callback('width: 350px;height: ' + r_height + 'px;top: ' + Math.floor((350 - r_height) / 2) + 'px;left: 0px;');
        };
        image.onerror = function () {
            callback(false);
        };
        image.src = url;
    }

    $(document.body).delegate(".displayimage", "click", function () {
        var d = $.dialog({
            content: '<img src=\'' + this.src + '\'/>',
            title: '图片预览'
        });
        d.showModal();
    });
})(jQuery);






